/*****************************************************************************************
 * ETS
 * 
 * Cours:		LOG121
 * Session:		A2013
 * Groupe:		04
 * Projet:		Laboratoire #3
 * �tudiants:	Frederic-Simon Mimeault
 * 				Francisco Felipe Quilodran
 * 
 * Professeur:	Francis Cardinal
 * 
 * Fichier:		Joueur.java
 * Description:
 * 		Cette classe defini les attributs et fonctionalistes necessaires pour un joueur de dés
 * 
 * Date de creation:	2013-11-01
 * Date dern. modif.:	2013-11-12
 * ****************************************************************************************
 * Historique des modifications
 * ****************************************************************************************
 * 2013-11-01 Version initiale
 * 2013-11-11 Impl�mentation des fonctions
 * 2013-11-12 Ajout de la documentation
 *****************************************************************************************/

package com.mq.etsmtl.framework;

public class Joueur implements Comparable<Joueur>,Cloneable
{	
	/**
	 * Surnom du joueur
	 */
	private String surnom;
	/**
	 * Nombre de points du joueur
	 */
	private int nbrePoints;
    /**
     * Constructeur avec le nom passée en parametre
     * @param surnom du joueur
     */
	public Joueur(String surnom)
    {
    	if(surnom != null)
    	{
	    	this.surnom=surnom;
	    	this.nbrePoints=0;
    	}
    	else
    	{
    		throw new NullPointerException();	
    	}
    }
	/**
	 * Les joueurs sont comparés par leur nombre de points en étant le meilleur celui qui possede le plus.
	 * @param jouerArg joueur comparé.
	 */
	@Override
	public int compareTo(Joueur jouerArg)
	{
		if(jouerArg != null){
			return  this.nbrePoints < jouerArg.getNbrePoints()?-1:this.nbrePoints > jouerArg.getNbrePoints()?1:0;
		}else{
			throw new IllegalArgumentException("Le joueur a comparer ne peut pas etre null");
		}
		
	}
	/**
	 * 
	 * @return le surnom du joueur
	 */
	public String getSurnom() {
		return surnom;
	}
	/**
	 * 
	 * @param surnom du joueur
	 */
	public void setSurnom(String surnom) 
	{
		this.surnom = surnom;
	}
	/**
	 * 
	 * @return Le nombre de points accumulée durant la partie
	 */
	public int getNbrePoints() {
		return nbrePoints;
	}
	/**
	 * Le joueur sont comparées par rapport a leur surnom
	 * @param joueurComp est le joueur comparé
	 */
	@Override
	public boolean equals(Object joueurComp) 
	{
		return this.surnom.equals(((Joueur) joueurComp).getSurnom())?true:false;
	}
	/**
	 * Cette méthode declanché une exception lorsque scoreTemp < 0
	 * @param scoreTemp est le nombre de points gagné dans un tour
	 * @throws IllegalArgumentException
	 */
	public void augmenterScore(int scoreTemp)
	{
		if(scoreTemp<0)throw new IllegalArgumentException();
		else this.nbrePoints+=scoreTemp;
	}
	@Override
	/**
	 * @return un clon du joueur.
	 */
	public Object clone() throws CloneNotSupportedException 
	{
		return super.clone();
	}
	
	
}
